package cn.operation.backend.service.baseBrand;


import cn.operation.backend.bo.CvBrandBO;
import cn.operation.backend.bo.ScBaseCvBrandBO;
import cn.operation.backend.bo.baseBrand.ScBrandSeriesModelBo;
import cn.operation.backend.query.BrandQueryConditions;
import cn.operation.backend.util.PageVo;
import cn.operation.backend.util.ResultDTOWithPagination;
import cn.operation.base.dto.extdto.baseBrand.ScBaseCvBrandDto;
import cn.operation.base.model.BrandSeriesModel;
import cn.operation.base.model.ScBaseCvBrand;
import org.springframework.validation.BindingResult;

import java.util.List;

public interface ScBaseCvBrandService {

	/**
	 * 新增
	 * 
	 * @param form
	 * @param br
	 * @return
	 */
	public Integer add(CvBrandBO form, BindingResult br) throws Exception;

	/**
	 * 修改
	 * 
	 * @param form
	 * @param br
	 * @return
	 */
	Integer update(CvBrandBO form, BindingResult br) throws Exception;

	/**
	 * 批量删除
	 * 
	 * @param ids
	 * @throws Exception
	 */
	int deleteBatch(List ids) throws Exception;

	/**
	 *
	 * @param pageVo
	 *            the page vo
	 * @param conditions
	 *            the conditions
	 * @return the map
	 */
	ResultDTOWithPagination selectListByConditions(PageVo pageVo, BrandQueryConditions conditions);

	/**
	 * select by code
	 * 
	 * @param id
	 * @return ScBaseCodeGroup
	 */
	ScBaseCvBrand selectById(Integer id);

	/**
	 * verificationForm
	 * 
	 * @param br
	 */
	void verificationForm(BindingResult br);

	/**
	 *
	 * @param conditions
	 * @return
	 */
	Integer selectCountList(BrandQueryConditions conditions);

	/**
	 *
	 * @param pageVo
	 * @param conditions
	 * @return
	 */
	List<ScBaseCvBrand> getAllList(PageVo pageVo, BrandQueryConditions conditions) throws Exception;

	/**
	 * 查询所有品牌
	 * 
	 * @return
	 * @throws Exception
	 */
	List<ScBaseCvBrand> selectAllBrand() throws Exception;

	/**
	 * 查询品牌及附属车系、车型
	 * 
	 * @param scBrandSeriesModelBo
	 * @return
	 * @throws Exception
	 */
    List<ScBaseCvBrandDto> selectBrandSeriesModelByCondition(PageVo pageVo,
															 ScBrandSeriesModelBo scBrandSeriesModelBo) throws Exception;


	ResultDTOWithPagination<List<ScBaseCvBrandDto>> findList(ScBaseCvBrandBO bo, PageVo pageVo);

	
	/**
	 * 新增商品车品牌
	 * @param bo
	 */
	void addScbasecvbrand(ScBaseCvBrandBO bo);
	/**
	 * 更新商品车品牌
	 * @param bo
	 */
	void updateScbasecvbrand(ScBaseCvBrandBO bo);
	/**
	 * 批量删除
	 * @param ids
	 */
	void deleteScbasecvbrand(String ids);
	
	
	/**
	 * 根据id查询商品车品牌
	 * @param id
	 * @return
	 */
	ScBaseCvBrand getScbasecvbrandById(Integer id);

	/**
	 *
	 * @param pageVo
	 * @param cvKeyword
	 * @return
	 */
	List<BrandSeriesModel> getListByParam(PageVo pageVo, String cvKeyword);

	/**
	 *
	 * @param cvKeyword
	 * @return
	 */
	Integer selectCountListByParam( String cvKeyword);
}
